home *** CD-ROM | disk | FTP | other *** search
-
- Compile the following:
-
- main(){while(1);}
-
- with `gcc -O' on a SPARC. You get, roughly:
-
- L1:
- b,a L1
- retl
-
- Run it on a SS5/170. Notice the machine is completely wedged.
- Power-cycle it.
-
-
- ------------------------------------------------------------------
-
-
- don't have a SS5 to crash, but just to add to CPU bugs topic...
-
- gcc_compiled.:
- .lcomm _c.0,40
- .text
- .align 2
- .globl _main
- _main:
- pushl %ebp
- movl %esp,%ebp
- movl $0,%eax
-
- pushaw
- popaw
- movl _c.0(%eax,%eax,4),%ebx
-
- pushl $0
- call _exit
-
- leave
- ret
-
- this hangs 386 CPU solid. Non-privileged.
- Change _main to main to taste.
-
-
- ------------------------------------------------------------------
-
- I have so far only been able to reproduce the hang on 170 MHz SS5s. I
- have *not* been able to reproduce it on 85 MHz SS5s, 110 MHz SS4s,
- Ultras, Classics, or pre-4m machines.
-
- Specifically, the CPU that hangs is identified as a MB86907 (made by
- Fujitsu), running at 170 MHz. It hangs when running the same code
- under either Solaris 2.5.1 or NetBSD 1.3_ALPHA, so I believe the bug
- is not OS-related.
-
- As far as I can tell, the CPU wedges completely; all response from I/O
- peripherals is dead, including L1-A on the keyboard and break on a
- serial console.
-
- To review, the sequence of instructions that causes the hang is:
-
- L1:
- b,a L1
- retl
-
- I have not exhaustively tested other instructions in the branch delay
- slot, but `ret' and `nop' also appear to `work' (i.e. cause the hang).
- It appears to be the branch instruction alone that's responsible for
- the hang. A non-annulled branch does not have the same effect.
-
-
-
-